2 - Rechnerarchitektur [ID:10856]
50 von 677 angezeigt

Ja, also wo sind wir angekommen? Letzte Woche. Wir haben uns ja schon mit den Hazards beschäftigt,

beziehungsweise ich fasse nochmal ganz kurz zusammen. Also wir hatten die Sache mit dem,

wieso geht denn das heute nicht? Also seltsam, warum das heute nicht geht. Also wenn noch jemand

kommt, dann sehen Sie es ja. So, also wo sind wir angekommen? Wir haben uns ja mit diesen CISC

Architekturen, also in Mikroprogrammierung habe ich ihn nochmal als Wiederholung von der GRA

nochmal erzählt und von CISC kam eben dann dieser Übergang zu RISC, eben weil die ganze

Sache nicht mehr effizient genug war, beziehungsweise es war so, dass die Compilerbauer ein Großteil der

Befehle nicht mehr verwendet haben, die ihnen eigentlich die CISC Architekten angeboten haben.

Gut, dann sind wir zu RISC übergegangen. Ein wesentlicher Wesenszug vom RISC ist das Pipelining,

dass wir also die einzelnen Befehle innerhalb von Befehls Phasen zeitlich überlappt ausführen und

dazu haben wir uns die optimalen Speedup ausgerechnet und der ist K. Wenn wir K-Stufen haben,

K-Pipelangstufen, dann können wir einen optimalen Speedup von K erzielen. Okay,

allerdings ist es nicht sinnvoll, die K so groß wie möglich zu machen, denn das würde die Hardwarekosten

nur unnötig vergrößern und wir hätten auch das Problem, dass wir viele leere Pipelinezyklen bei

Verzweigungen hätten und zwar zu den Verzweigungen kommen wir nämlich jetzt gleich. So, okay,

dann das haben wir glaube ich auch schon gemacht, ich glaube wir sind bis vor die 29 gekommen. Und

was sind Superskaladeeinheiten? Superskaladeeinheiten ist, dass man eben nicht nur,

heute irgendwie funktioniert der Mechanismus nicht, mach nichts. Ich will das zumachen,

wenn der Steffen nebenan sitzt, dann hört ja meine Freundin sie noch mit. So Superskaladeeinheiten,

dass man nicht nur eine Pipeline, sondern gleich mehrere Pipeline-Stufen parallel ausnutzen. Okay,

ich habe mir nur dieses Bildchen hier gerade gezeigt, mehrere von diesen Eierköpfen holen

sich da jetzt die Befehle eben ab, der gibt einen Takt vor und die rennen alle kunderbunt durch die

Gegend und führen jeweils die Aufgabe des Befehlszyklus aus, der für sie gedacht ist. Also der

hat zum Beispiel einen Taschenrechner, der ist wahrscheinlich die Ausführungseinheit. Okay,

das war Superskalader, Rechner, genau. Das allgemeine Prinzip, fassen wir das auch noch mal zusammen,

es ist keine direkte Parallelität, wie jetzt beispielsweise bei einem Multicore, wo direkt

von der Software, beispielsweise bei Maltes Retting, bei OpenMP Hinweise gegeben werden müssen,

sodass der Compiler Code erzeugt, der dann auf zwei Kern auch läuft, sondern es ist eine implizite

Parallelität, das heißt das Herausziehen von Parallelität aus dem sequenziellen Befehlsstrom,

was komplett in der Hardware passiert. Das ist das Wesentliche und was spricht jetzt auch noch

dagegen, dass man endlich oder sehr große Pipeline-Stufen machen, eben diese zum Beispiel

Datenabhängigkeiten, die sogenannten Datenhesserts, da habe ich Ihnen dieses Beispiel hier gezeigt.

Also beispielsweise, ich will jetzt R1 mit R2 multiplizieren und das Ergebnis soll nach R3

geschrieben werden. Dann schauen wir das jetzt hier an, erste Phase Befehl holen, zweite Phase

dekodieren, dritte Phase Operanten holen, vierte Phase Befehl ausführen und der zweite Befehl ist

auch schon in der Pipeline, der erholt seine Operanten, genau in dem Moment, wo der erste

Befehl noch ausgeführt wird. Das heißt, das R3 ist noch nicht zurückgeschrieben. Was passiert?

Der hier, der Befehl wird ein anderes, wird ein falsches R3 lesen. Und wie wir das jetzt auflösen,

diese Fehlerquelle beseitigen können, das schauen wir uns heute noch nicht, aber in der nächsten

Woche an. Was wir uns heute anschauen, sind wie wir solche Steuerungshesserts, wie wir

dem begegnen können. Also beispielsweise, hier werden jetzt eine Abfrage R1 gleich R2,

dann sollen wir zu 72 springen. Jetzt sind aber auch schon die Folgebefehle an der Adresse 44,

48 und 52 in der Pipeline. Und was passiert? Ja, wenn wir den Befehl ausführen, den bedingten

Sprungbefehl Befehl ausführen, heißt jetzt, wir werten die Bedingungen aus. Wir gucken nach,

ob R1 gleich R2 ist. Und jetzt erst in dem Moment, zum diskreten Zeitstück 4, wissen wir,

ob R1 gleich R2 ist. Jetzt wenn R1 leider gleich R2 ist, müssten wir mit 72 weitermachen. Aber

leider ist der nächste Befehl, die nächsten drei Befehle, die schon in der Pipeline sind,

sind verkehrt. Wir sind nämlich 44, 48 und 52. Wir müssten aber an 72 fortsetzen. Also das ist

dann ein sogenannter Controlhessert oder Steuerungshessert. Und Hesserts beim Pipeline

können also, das sind die drei Klassen von Hesserts, die entstehen, entstehen können,

Teil einer Videoserie :

Zugänglich über

Offener Zugang

Dauer

01:26:37 Min

Aufnahmedatum

2013-10-24

Hochgeladen am

2019-04-30 03:09:03

Sprache

de-DE

Die Vorlesung baut auf die in den Grundlagen der Rechnerarchitektur und -organisation vermittelten Inhalte auf und setzt diese mit weiterführenden Themen fort. Es werden zunächst grundlegende fortgeschrittene Techniken bei Pipelineverarbeitung und Cachezugriffen in modernen Prozessoren und Parallelrechnern behandelt. Ferner wird die Architektur von Spezialprozessoren, z.B. DSPs und Embedded Prozessoren behandelt. Es wird aufgezeigt, wie diese Techniken in konkreten Architekturen (Intel Nehalem, GPGPU, Cell BE, TMS320 DSP, Embedded Prozessor ZPU) verwendet werden. Zur Vorlesung werden eine Tafel- und eine Rechnerübung angeboten, durch deren erfolgreiche Beteiligung abgestuft mit der Vorlesung 5 bzw. 7,5 ECTS erworben werden können. In den Tafelübungen werden die in der Vorlesung vermittelten Techniken durch zu lösende Aufgaben vertieft. In der Rechnerübung soll u.a. ein einfacher Vielkern-Prozessor auf Basis des ZPU-Prozessors mit Simulationswerkzeugen aufgebaut werden. Im Einzelnen werden folgende Themen behandelt:
  • Organisationsaspekte von CISC und RISC-Prozessoren

  • Behandlung von Hazards in Pipelines

  • Fortgeschrittene Techniken der dynamischen Sprungvorhersage

  • Fortgeschritten Cachetechniken, Cache-Kohärenz

  • Ausnutzen von Cacheeffekten

  • Architekturen von Digitalen Signalprozessoren

  • Architekturen homogener und heterogener Multikern-Prozessoren (Intel Corei7, Nvidia GPUs, Cell BE)

  • Architektur von Parallelrechnern (Clusterrechner, Superrechner)

  • Effiziente Hardware-nahe Programmierung von Mulitkern-Prozessoren (OpenMP, SSE, CUDA, OpenCL)

  • Leistungsmodellierung und -analyse von Multikern-Prozessoren (Roofline-Modell)

Empfohlene Literatur
  • Patterson/Hennessy: Computer Organization und Design
  • Hennessy/Patterson: Computer Architecture - A Quantitative Approach

  • Stallings: Computer Organization and Architecture

  • Märtin: Rechnerarchitekturen

Einbetten
Wordpress FAU Plugin
iFrame
Teilen